iT邦幫忙

0

lejos ev3 (ev3 使用 java 完整攻略) - jerry Tsai

  • 分享至 

  • xImage
  •  

Ev3 是 LEGO® MINDSTORMS® 樂高公司發展的可程式機器人,有原生的專用語法,且可使用java 做控制。
網路上已有幾篇文章,可惜未能從頭解釋到實作,本文希望有相同問題的人看這篇就夠了,補充一些較困難的細節,以下是完整的測試過程。

開發環境設定
Java 語言是一種可以跨平台的語言,原理上需要有一個在該平台上執行java的執行器,而Ev3 (較舊型的還有nxt),使用 java 主要是使用一個可以把ev3啓動成可以執行java的系統,名為 lejos。

安裝的部份如下:
1.windows端 使用j2se的開發(含jdk)

(這裡查官網lejos0.9.0只能使用到jdk1.7的開發)https://download.oracle.com/java/17/latest/jdk-17_windows-x86_bin.exe
安裝好後將jdk開發元件 安裝在 c:\jdk1.7 底下, 另外windows的java執行器(jre )則使用 安裝程式預設的路徑。

設置java 環境變數
控制台->系統->進階系統設定->環境變數
JAVA_HOME=c:\jdk1.7

**2.Ev3端
燒錄lejos for ev3 **
此處下載的列表中lejos 也有舊款 nxt 的安裝軟體,注意到 要下載ev3版。
下載lejos ev3 我的目標是下載 0.9.0 的安裝程式
https://sourceforge.net/projects/ev3.lejos.p/files/0.9.0-beta/leJOS_EV3_0.9.0-beta_win32_setup.exe/download
安裝完成後,在 控制台>系統 發現 環境變數已新增
**
Ev3_HOME=c:\Program Files\leJOS EV3

3.燒製啓動Ev3用的 小張TF/SD卡 分為2個步驟
實做中這裡有奌複雜
測試了很多次都失敗,直接燒錄卡片,Ev3本體並無法用lejos 開機,機器還是使用原來的Ev3系統開機
,後來查詢很多網路資料,發現要做2次的燒錄,第一次燒錄成空白卡,第二次將其他啓動軟體拷貝進入;猜測啓動卡本身的磁區要設成 主要啓動磁區。
https://ithelp.ithome.com.tw/upload/images/20220324/201477072YVptdiAyH.png
3.1燒錄卡片第1次
將 lejos Ev3安裝中附的 Sd500.zip 解壓縮 為sd500.img

,下載 win32 disk imager https://sourceforge.net/projects/win32diskimager/
https://ithelp.ithome.com.tw/upload/images/20220324/20147707Q1UaaMM93P.png

此時為確保啓動卡沒有問題,先將此空白卡 做 Fat32 的格式化。
再做win32diskimager燒錄,捉取sd500.img製做成 啓動卡 燒錄完成後 原本 32G 的SD卡 變成500M 大小 的空白卡,

3.2寫入卡片第2次:找到lejos的安裝目錄
( c:\Program Files\leJOS EV3 ),接着找到bin目錄,打開ev3sdcard.bat 這個批次檔 做執行

燒錄的內容 會自動選lejosimage.zip

3.3下載EV3 JRE 注意一樣下載1.7版,ejre-7u60-b19-ejre-7u60-fcs-b19-linux-arm-sflt-headless-07_may_2014.tar.gz這個。
http://download.oracle.com/otn/java/ejre/7u60-b19/ejre-7u60-fcs-b19-linux-arm-sflt-headless-07_may_2014.tar.gz

將開機用的其他檔案製作到 卡片中,過程如下,
發現SD卡的名稱在第1次被改為 ”SD500” 此處設為G 磁碟。
https://ithelp.ithome.com.tw/upload/images/20220324/20147707NXdFKyt8WL.png

燒錄2次的SD卡放入EV3中 再開機,顯示如下:
https://ithelp.ithome.com.tw/upload/images/20220324/201477073n68QJYSVE.png
開機過程顯示載入linux 模組及啓動許多Ev3的元件。
花了很多時間,此時Ev3 已可以用lejos 開機了。
https://ithelp.ithome.com.tw/upload/images/20220324/20147707REE0a7rEf4.png

以上 EV3 安裝lejos的部份已全部完成。
再來要設定 pc端 windows 上寫程式的部份

4.下載eclipse mars 版( 執行jdk1.7)
https://www.eclipse.org/downloads/packages/release/mars/2

5.加入 lejos 功能 到 eclipse 上
在Eclipse 選單 “help”->”install newsoftware”->”add”
Name填入lejos,Location填入http://lejos.sourceforge.net/tools/eclipse/plugin/ev3,
最後點擊Ok。

6.將 ev3 機器 接線 連到 windows usb 上
Pc 上出現 “新增硬體” 提示
https://ithelp.ithome.com.tw/upload/images/20220324/20147707zlCKn0UYWb.png

查詢網路,才知道 要裝一個 RNDIS 的驅動
Google 一下,RNDIS(Remote Network Driver Interface Specification,遠程網絡驅動接口規範)是一個通信協議。
安裝 windows 連到ev3 的驅動程式 driver
如下連結:
http://www.java-online.ch/lego/index.php?inhalt_links=home/nav_home.inc.php&inhalt_mitte=ev3install/usb_windows.inc.php&navUSB=ev3install/usb_windows.inc.php

安裝好以後照著EV3主機上的顯示 10.0.1.1 檢查看有沒有連接到,
使用 ping 指令 : ping 10.0.1.1
https://ithelp.ithome.com.tw/upload/images/20220325/20147707rgpnmNqmfa.png
有回應Reply 表示Windows 已經可以連到Ev3了 。

7.打開eclipse 新增一個 lejos 專案
新增一個測試文件 檔名是Test.java
https://ithelp.ithome.com.tw/upload/images/20220325/20147707zAM9VzMoiq.png

選擇lejos -> Ev3 control
https://ithelp.ithome.com.tw/upload/images/20220325/20147707yoT4gqWblS.png

Name 的地方填入 Ev3 的ip位址 10.0.1.1
https://ithelp.ithome.com.tw/upload/images/20220325/20147707X2FRZHyP0S.png

按 Connect
https://ithelp.ithome.com.tw/upload/images/20220325/20147707NFne6CWmcp.png

顯示 Connected (已連接)

8.將測試程式上傳
寫一個 測試程式 取名 Test.java 執行檔 做成 Test.jar
上傳 (按 下方 Upload File)
https://ithelp.ithome.com.tw/upload/images/20220325/20147707vixRtNlF50.png
此時顯示 java 測試程式Test 已經上傳成功。
https://ithelp.ithome.com.tw/upload/images/20220325/20147707uBRy6IBUmp.png

9.執行測試
https://ithelp.ithome.com.tw/upload/images/20220325/20147707BuqmnHVEV1.jpg

出現 執行 java 的圖形

https://ithelp.ithome.com.tw/upload/images/20220325/20147707BGar9TfbM8.png

10.測試用 程式解析
Test.java
Import lejos.hardware.motor.Motor; //引入 馬達類別
Import lejos.robotics.RegulatedMotor; //引入 馬達類別
public class Test { //建構類別 Test
static RegulatedMotor leftMotor = Motor.B;
//宣告 取名 左馬達 是 B埠 右馬達是 C埠
static RegulatedMotor rightMotor = Motor.C;
public static void main(String[] args) //執行區
{
leftMotor.setSpeed(400); //設定左速度為400
rightMotor.setSpeed(400); //設定右速度為400
for(int i=0;i<10000;i++) //設定迴圈執行一萬次
{
leftMotor.forward(); //左馬達 正轉
rightMotor.forward();//右馬達 正轉
}
}
}

**11.執行結果:

按照java測試程式中所寫的 ,輪型機器人Ev3

設定速度為400,

向前 直走 了一些時間 等 for 迴圈跑完就自動停止了。**

到此 Ev3 使用java 全部完成, 後續其他功能尚待時間研究。

此文若蒙參考採用 請貼上連結 謝謝

參照文件

  1. lejos +Ev3+win7之設定
    https://www.twblogs.net/a/5b891e8e2b71775d1ce00144
  2. lejos Ev3 問題解決
    http://blog.sina.com.cn/s/blog_1967596aa0102za7u.html
    3.修平科技大學 資訊管理系 實務專題審查 掃地機器人製作(lejos Nxt)
    http://ir.hust.edu.tw/bitstream/310993100/3209/1/

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言